

#import <Foundation/Foundation.h>
#import "ServerCommunicationDelegate.h"
#import "BaseRequest.h"
#import "BaseResponse.h"

@protocol ServerCommunicationProtocol <NSObject>
@required


/* @function cancelRequest requestid就可以标识，＋delegate主要是双重校验，避免有人误取消了别人的请求。
 * @param requestid 发送请求是返回的requestid
 * @param delegate 发送请求是设定的回调代理
 */
- (void)cancelRequest:(RequestID)requestid delegate:(id<ServerCommunicationDelegate>)delegate;

/* @function sendRequest 如果应用层需要考虑取消请求，需要记录RequestID.删除请求时是requestid和delegate双重校验
 * @param request TMBaseRequest或者其子类
 */
- (RequestID)sendRequest:(BaseRequest*)request;

/* @function setCookie 设置cookie，暂时cookie的域名是在配置中统一配置，无法修改。
 * @param value cookie的值
 * @param key cookie的键
 */
- (void)setCookie:(NSString*)value forKey:(NSString*)key;

/* @function setCookie 取消cookie，暂时仅能取消统一配置的域名下的cookie。
 * @param key cookie的键
 */
- (void)clearCookieForKey:(NSString*)key;

@end
